import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { logger } from './common/middlewares/logger.middleware';
import { NestExpressApplication } from '@nestjs/platform-express';
import { join } from 'path';
import { initSwagger } from './common/plugins/swagger';
import { ValidationPipe } from '@nestjs/common';

const bootstrap = async () => {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);

  // 初始化Swagger
  initSwagger(app);

  // 模板引擎
  // 设置模板引擎目录
  app.setBaseViewsDir(join(__dirname, '..', 'views'));
  // 设置模板引擎
  app.setViewEngine('hbs');

  // 设置静态文件目录
  app.useStaticAssets(join(__dirname, '..', 'static'));

  // 管道验证
  app.useGlobalPipes(new ValidationPipe({
    transform: true,
    // 跳过未定义的属性
    skipMissingProperties: true,
  }));

  // 日志
  app.use(logger);

  // 开启跨域
  app.enableCors();


  await app.listen(3000);

};
bootstrap();
